Scroll to navigation

FSYNC(2) Podręcznik programisty Linuksa FSYNC(2)

NAZWA

fsync, fdatasync - synchronizacja pełnego wewnątrzrdzeniowego stanu pliku z zapisanym na dysku

SKŁADNIA

#include <unistd.h>

int fsync(int fd);

int fdatasync(int fd);

OPIS

fsync kopiuje wszystkie wewnątrzrdzeniowe części pliku na dysk i czeka na zgłoszenie przez urządzenie, że wszystkie dane znajdują się na trwałym nośniku. Aktualizuje również informacje statystyczne o metadanych. Nie gwarantuje, że wpis w katalogu zawierający informacje o pliku również zostanie zapisany na dysku. Aby to osiągnąć, wymagane jest jawne wywołanie fsync dla deskryptora katalogu.

fdatasync robi to samo, co fsync, lecz zapisuje jedynie dane użytkownika, bez metadanych, takich jak mtime czy atime.

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i odpowiednio ustawiane errno.

BŁĘDY

fd nie jest prawidłowym deskryptorem pliku otwartego do zapisu.
fd jest powiązany ze specjalnym plikiem, który nie wspiera synchronizacji.
Pojawił się błąd podczas synchronizacji.

UWAGI

W sytuacji, gdy twardy dysk ma włączone buforowanie zapisów, dane mogą w rzeczywistości nie zostać zapisane na trwałym nośniku do chwili powrotu z fsync/fdatasync.

Gdy system plików ext2 jest zamontowany z opcją sync, wpisy w katalogach są również jawnie zapisywane przez fsync.

W kernelach przed 2.4, fsync na dużych plkach mogło być niewydajne. Alternatywą mogło być używanie znacznika O_SYNC dla open(2).

ZGODNE Z

POSIX.1b (wcześniej POSIX.4)

ZOBACZ TAKŻE

bdflush(2), open(2), sync(2), mount(8), update(8), sync(8)

2001-04-18 Linux 1.3.85